package com.lihepeng.leecode.frequency.ArrayList;

import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

/**
 *
 * BM51 数组中出现次数超过一半的数字
 * 给一个长度为 n 的数组，数组中有一个数字出现的次数超过数组长度的一半，请找出这个数字。
 * 例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次，超过数组长度的一半，因此输出2。
 */
public class Solution51 {

    public int MoreThanHalfNum_Solution(int [] array) {
        int length = array.length;
        if (length==1){
            return array[0];
        }
        Map<Integer,Integer> param = new HashMap<>();

        for (int i=0;i<array.length;i++) {
            if (param.containsKey(array[i])) {
                int count = param.get(array[i]);
                if (++count>length/2) {
                    return array[i];
                }
                param.put(array[i],count);
            }else {
                param.put(array[i],1);
            }
        }
        return 0;
    }
    @Test
    public void runTest() {
        int[] arrs={1,2,3,2,2,2,5,4,2};
        int i = MoreThanHalfNum_Solution(arrs);
        System.out.println(i);
    }
}
